package com.codewsq.proxy;

/**
 * 静态代理示例
 *
 * @author codewsq
 * @date 2021/8/14 0014 14:04
 */
public class StaticProxyTest {

    public static void main(String[] args) {
        ProxyClothesFactory proxyFactory = new ProxyClothesFactory(new HongXingErke());
        proxyFactory.produceClothe();
    }
}


/**
 * 1. 创建共同的接口：生产衣服的工厂，工厂具有生产衣服的方法
 *
 * @author codewsq
 * @date 2021/8/14 0014 14:04
 */
interface ClothesFactory {
    // 生产衣服
    void produceClothe();
}

/**
 * 2. 被代理类
 * 鸿星尔克 实现衣服工厂，只需要进行衣服制作
 *
 * @author codewsq
 * @date 2021/8/14 0014 14:08
 */
class HongXingErke implements ClothesFactory {

    @Override
    public void produceClothe() {
        System.out.println("制作鸿星尔克运动服！");
    }
}

/**
 * 3. 代理类
 * 代理鸿星尔克做其他商务接触
 *
 * @author codewsq
 * @date 2021/8/14 0014 14:09
 */
class ProxyClothesFactory implements ClothesFactory {

    private HongXingErke hongXingErke;

    public ProxyClothesFactory(HongXingErke hongXingErke) {
        this.hongXingErke = hongXingErke;
    }

    @Override
    public void produceClothe() {
        System.out.println("商务洽谈，为市场做准备。");
        hongXingErke.produceClothe(); // 生产衣服还是让鸿星尔克自己来，鸿星尔克做自己的核心工作
        System.out.println("带着生产出来的货物进入市场，进行野性售卖。");
    }
}